package com.study.spark.scala.chapter05

object Scala04_Function_NightMare {
  def main(args: Array[String]): Unit = {
    // TODO 函数式编程
    // TODO 能省则省（至简原则）
    // TODO 1.return关键字可以省略
    // TODO 2.如果函数返回数据，由此可以推断出返回值类型，那么返回值类型可以省略
    def test1(): String ={
      return "zhangsan"
    }

    def test2() ={
      "lisi"
    }

    val zhangsan: String = test1()
    val lisi: String = test2()
    println(zhangsan)//zhangsan
    println(lisi)//lisi

    // TODO 3.如果函数体逻辑代码只有一行，那么大括号可以省略
    def test3() = "wangwu"
    println(test3())//wangwu

    // TODO 4.如果函数参数列表没有声明任何参数，那么参数列表可以省略
    def test4 = "zhaoliu"
    println(test4)//zhaoliu

    // TODO 5.如果希望省略Unit，但同时又不希望函数体中return起作用，那么就可以省略=号
    def test5(): Unit ={
      return "tianqi"
    }
    println(test5())//()

    // 过程函数
    def test6() {
      return "gouba"
    }
    println(test6())//()

    // TODO 6.关键字def和函数名也可以省略，称之为匿名函数
    // 不能独立使用
    // 省略的同时也需要将返回值类型同时省略，将等号增加一个箭头
    val f =() => {
      "zhangsan111"
    }
    println(f())//zhangsan111


  }

}
  